/***************************************************************************
 *   Copyright (C) 2007 by Alexandre Masselot,,,   *
 *   alex@alex-laptop   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU Library General Public License as       *
 *   published by the Free Software Foundation; either version 2 of the    *
 *   License, or (at your option) any later version.                       *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU Library General Public     *
 *   License along with this program; if not, write to the                 *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef BOLPEAKTHEOMSMS_H
#define BOLPEAKTHEOMSMS_H

#include <ostream>

#include "peakintensity.h"

using namespace std;
namespace bol {

/**
  Info regarding a theoretical msms fragment peak
  @author Alexandre Masselot,,, <alex@alex-laptop>
 */
  class PeakTheoMsms : public PeakIntensity
  {
    private:
      const int m_pos;
      const unsigned int m_seriesIndex;
      const char* const m_description;
    public:
      /**
     * instantiate a new new theoretical peak
     * @param m the m/z
     * @param c charge mask
     * @param p position on the peptide (-1 means there is no defined position - immonium, precursor...)
     * @param s series index
     * @param d a description (e.g y++(2)), if not given, NULL is set;
       */
      PeakTheoMsms(const double m, const Pchargemask c, const int p, const unsigned int s, const char* const d=NULL):PeakIntensity(m, c, 0), m_pos(p), m_seriesIndex(s), m_description(d){
      }

      ~PeakTheoMsms(){}

      friend ostream& operator<<(ostream& out, const PeakTheoMsms& p);
      friend ostream& operator<<(ostream& out, const PeakTheoMsms* p);

      const int pos() const {
        return m_pos;
      }

      const unsigned int seriesIndex() const {
        return m_seriesIndex;
      }



  };

}

#endif
